#include <stdio.h>
#include <string.h>
#include <unistd.h>

int main()
{
  //C接口
  printf("hello printf\n");
  fprintf(stdout, "hellp fprintf\n");
  const char *fputsString = "hello fputs\n";
  fputs(fputsString, stdout);

  //系统接口
  const char *wstring = "hello write\n";
  write(1, wstring, strlen(wstring));

  //代码结束之前，创建子进程
  //1.如果我们没有进行,看到了四条消息
  // stdout 默认使用的是行刷新，在进程fork之前，三条C函数已经将数据进行打印输出到显示器上(外设)，你的FILE内部，进程内部不存在对应的数据了
  // 2.如果我们进行了>,写入文件不再是显示器,而是普通文件，采用的刷新策略是全缓冲，之前的3条c显示函数，虽然带了\n，但是不足以stdout缓冲区写满！数据并没有被刷新！！！
  // 执行fork的时候，stdout属于父进程，创建子进程时，紧挨着就是进程退出！谁先退出，一定要进行缓冲区刷新（就是修改）
  // 3.write为什么没有呢？上面的过程都和write无关，write没有FILE,而用的是fd,就没有C提供的缓冲区
  
  fork();

  return 0;
}
